package com.jucat.enums;

import lombok.Getter;

/**
 * 系统中的错误码
 * 错误码名称命名规则
 * 模块_业务_别名
 * 如查询用户不存在，SYS_USER_NOT_EXISTS表示系统模块下用户相关业务查询不到数据
 * <p>
 * 错误码的命名规则
 * 模块(2)_业务(2)_编号(3),SYS_USER_NOT_EXISTS对应的编号可以是1010001
 * <p>
 * 通用的成功和失败是两个特殊的情况
 *
 * 错误码编码表
 * 模块       业务
 * 系统-10    数据-00
 *            文件-01
 *            资源-02
 *            认证-03
 * @author manem
 */
@Getter
public enum CodeEnum {
    // 内部错误
    ERR(1000, "内部错误"),
    OK(0, "成功"),

    /**
     * 业务通用的错误码
     */
    COM_DATA_ADD_FAILED(1000001, "添加失败"),
    COM_DATA_EDIT_FAILED(1000002, "编辑失败"),
    COM_DATA_DEL_FAILED(1000003, "删除失败"),
    COM_DATA_EXISTS(1000004, "数据已存在"),
    COM_DATA_NOT_EXISTS(1000005, "数据不存在"),
    // 用于分页查询，已到分页尾
    COM_DATA_NO_MORE(1000006, "没有更多了"),
    // 用于分页数据查询，首次查询为空
    COM_DATA_EMPTY(1000007, "暂无数据"),
    /**
     * 系统模块
     */
    SYS_FILE_SAVE_FAILED(1001000, "保存文件失败"),
    // http错误
    SYS_HTTP_REQ_ERR(1002001, "资源不存在"),
    // 认证授权
    SYS_AUTH_NOT_LOGIN(1003001, "请重新登录！未登录或登录信息已失效。"),
    SYS_AUTH_NO_PERMISSION(1003002, "请向管理申请权限，暂无操作权限。"),
    SYS_AUTH_TOKEN_MISSING(1003003, "缺少token"),
    SYS_AUTH_TOKEN_INVALID(1003004, "无效的token"),
    SYS_AUTH_FAILED(1003005, "认证失败"),
    // 参数校验
    SYS_VALIDATE_ERR(1004001, "参数校验不通过")
    ;

    private final Integer code;
    private final String msg;

    CodeEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}
